.\"
.\" Copyright (c) 2006, Sun Microsystems, Inc.
.\" Copyright 2021 Oxide Computer Company
.\"
.\" The contents of this file are subject to the terms of the
.\" Common Development and Distribution License (the "License").
.\" You may not use this file except in compliance with the License.
.\"
.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
.\" or http://www.opensolaris.org/os/licensing.
.\" See the License for the specific language governing permissions
.\" and limitations under the License.
.\"
.\" When distributing Covered Code, include this CDDL HEADER in each
.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
.\" If applicable, add the following below this CDDL HEADER, with the
.\" fields enclosed by brackets "[]" replaced with your own identifying
.\" information: Portions Copyright [yyyy] [name of copyright owner]
.\"
.Dd March 30, 2022
.Dt HSFS 4FS
.Os
.Sh NAME
.Nm hsfs
.Nd High Sierra & ISO 9660 CD-ROM file system
.Sh DESCRIPTION
.Nm
is a file system type that allows users to access files on High Sierra or ISO
9660 format CD-ROM disks from within the SunOS operating system.
Once mounted, a
.Nm
file system provides standard read-only file system operations and semantics,
meaning that you can read and list files in a directory on a High Sierra or ISO
9660 CD-ROM and applications can use standard UNIX system calls on these files
and directories.
.Pp
This file system contains support for Rock Ridge, ISO 9660 Version 2 and Joliet
extensions.
These extensions provide support for file names with a length of at least 207
bytes, but only Rock Ridge extensions
.Pq with the exception of writability and hard links
can provide file system semantics and file types as they are found in UFS.
The presence of Rock Ridge, ISO 9660 Version 2, and Joliet is autodetected and
the best-suitable available extension is used by the HSFS driver for file name
and attribute lookup.
.Pp
If your
.Pa /etc/vfstab
file contains a line similar to the following:
.Bd -literal
/dev/dsk/c0t6d0s0 - /hsfs hsfs - no ro
.Ed
.Pp
and
.Pa /hsfs
exists, you can mount an
.Nm
file system with either of the following commands:
.Bd -literal -offset indent
mount -F hsfs -o ro device-special directory-name
.Ed
or
.Bd -literal -offset indent
mount /hsfs
.Ed
.Pp
By default, Rock Ridge extensions are used if available, otherwise ISO 9660
Version 2, then Joliet are used.
If neither extension is present HSFS defaults to the standard capabilities of
ISO 9660.
Since so-called hybrid CD-ROMs that contain multiple extensions are possible,
you can use the following mount options to deliberately disable the search for a
specific extension or to force the use of a specific extension even if a
preferable type is present:
.Bd -literal
mount -F hsfs -o ro,nrr device-special directory-name
.Ed
.Pp
Mount options are:
.Bl -tag -width Ds
.It rr
Request HSFS to use Rock Ridge extensions, if present.
This is the default behavior and does not need to be explicitly specified.
.It nrr
Disable detection and use of Rock Ridge extensions, even if present.
.It vers2
Request HSFS to use ISO 9660 Version 2 extensions, even if Rock Ridge is
available.
.It novers2
Disable detection and use of ISO 9660 Version 2 extensions.
.It joliet
Request HSFS to use Joliet extensions, even if Rock Ridge or ISO 9660 Version 2
extensions are available.
.It nojoliet
Disable detection and use of Joliet extensions.
.El
.Pp
Files on a High Sierra or ISO 9660 CD-ROM disk have names of the form
.Pa filename.ext;versio ,
where
.Fa filename
and the optional
.Fa ext
consist of a sequence of uppercase alphanumeric characters
.Po
including
.Sq _
.Pc ,
while the
.Fa version
consists of a sequence of digits, representing the version number of the file.
.Nm
converts all the uppercase characters in a file name to lowercase, and truncates
the
.Sq ;
and version information.
If more than one version of a file is present on the CD-ROM, only the file with
the highest version number is accessible.
.Pp
Conversion of uppercase to lowercase characters may be disabled by using the
.Fl o
.Ar nomaplcase
option to
.Xr mount 8 .
See
.Xr mount_hsfs 8 .
.Pp
If the CD-ROM contains Rock Ridge, ISO 9660 version 2 or Joliet extensions, the
file names and directory names may contain any character supported under
.Xr ufs 4FS .
The names may also be upper and/or lower case and are case sensitive.
File name lengths can be as long as those of
.Xr ufs 4FS .
.Pp
Files accessed through
.Nm
have mode 555
.Pq owner, group and world readable and executable ,
uid 0 and gid 3. If a directory on the CD-ROM has read permission,
.Nm
grants execute permission to the directory, allowing it to be searched.
.Pp
With Rock Ridge extensions, files and directories can have any permissions that
are supported on a
.Xr ufs 4FS
file system.
However, under all write permissions, the file system is read-only, with
.Er EROFS
returned to any write operations.
.Pp
Like High Sierra and ISO 9660 CD-ROMs, HSFS supports only regular files and
directories.
A Rock Ridge CD-ROM can support regular files, directories, and symbolic links,
as well as device nodes, such as block, character, and FIFO.
.Sh EXAMPLES
.Sy Example 1
Sample Display of File System Files
.Pp
If there is a file
.Pa BIG.BAR
on a High Sierra or ISO 9660 format CD-ROM it will show up as
.Pa big.bar
when listed on a
.Nm
file system.
.Pp
If there are three files
Pa BAR.BAZ;1 ,
Pa BBAR.BAZ;2 ,
and
.Pa BAR.BAZ;3
on a High Sierra or ISO 9660 format CD-ROM, only the file
.Pa BAR.BAZ;3
will be accessible.
It will be listed as
.Pa bar.baz .
.Sh DIAGNOSTICS
.Bl -tag -width Ds
.It "hsfs: Warning: the file system...  does not conform to the ISO-9660 spec"
The specific reason appears on the following line.
You might be attempting to mount a CD-ROM containing a different file system,
such as
.Xr ufs 4FS
.It "hsfs: Warning: the file system... contains a file [with an] unsupported"
type"
The
.Nm
file system does not support the format of some file or directory on the CD-ROM,
for example a record structured file.
.It "hsfs: hsnode table full, %d nodes allocated"
There are not enough
.Nm
internal data structure elements to handle all the files currently open.
This problem may be overcome by adding a line of the form
.Ql set hsfs:nhsnode=number
to the
.Pa /etc/system
system configuration file and rebooting.
See
.Xr system 5 .
.El
.Sh SEE ALSO
.Xr vfstab 5 ,
.Xr mount 8 ,
.Xr mount_hsfs 8
.Pp
.Rs
.%A N. V. Phillips
.%A Sony Corporation
.%T System Description Compact Disc Digital Audio, ("Red Book")
.Re
.Rs
.%A N. V. Phillips
.%A Sony Corporation
.%T System Description of Compact Disc Read Only Memory, ("Yellow Book")
.Re
.Rs
.%T Volume and File Structure of CD-ROM for Information Interchange
.%N ISO 9660:1988(E)
.Re
.Sh WARNINGS
Do not physically eject a CD-ROM while the device is still mounted as a
.Nm
file system.
.Pp
Under MS-DOS
.Pq for which CD-ROMs are frequently targeted ,
files with no extension may be represented either as:
.Pa filename\&.
or
.Pa filename
that is, with or without a trailing period.
These names are not equivalent under UNIX systems.
For example, the names:
.Pa BAR\&.
and
.Pa BAR
are not names for the same file under the UNIX system.
This may cause confusion if you are consulting documentation for CD-ROMs
originally intended for MS-DOS systems.
.Pp
Use of the
.Fl o
.Ar notraildot
option to
.Xr mount 8
makes it optional to specify the trailing dot.
See
.Xr mount_hsfs 8 .
.Sh NOTES
No translation of any sort is done on the contents of High Sierra or ISO 9660
format CD-ROMs; only directory and file names are subject to interpretation by
.Nm .
